1
Investigasi Performa
DSAI2202Lab 8: Composing Data Operations

Tim dukungan akademik memerlukan daftar pendaftaran aktif yang performa terbarunya menurun. Bandingkan setiap mahasiswa dengan performa mereka sendiri sebelumnya pada mata kuliah yang sama.

Sepakati Aturannya

  1. Gunakan dua periode: sebelumnya dan terbaru. Masing-masing memiliki dua penilaian dengan bobot yang sama.
  2. Syaratkan minimal dua nilai non-NULL pada setiap periode sebelum membandingkan rata-rata.
  3. Hitung decline_points = earlier_avg - recent_avg.
  4. Penurunan minimal 15 poin berarti Review. Jika tidak, pendaftaran yang memenuhi syarat mendapat Tanpa peringatan.
  5. Pisahkan Data tidak memadai secara terpisah. Nol adalah nilai yang sah; NULL atau catatan yang hilang bukanlah nol.

Siapkan Database Anda

Buka lab8_setup.sql yang disediakan dari folder TA DSAI2202/lab8/ di pgAdmin dan jalankan file lengkapnya. Gunakan kembali pengaturan koneksi di sebelah kanan setiap kali Anda membuka koneksi baru.

Skrip setup juga menyediakan performance_comparison, sebuah kueri tersimpan yang disebut view. Ini akan mendukung latihan selanjutnya; ini bukan tabel tambahan berisi hasil penilaian yang disimpan.

✍️ Periksa Sebelum Menghitung
Periksa E01, E07, E08, E09, dan E24. Tentukan mana yang memiliki cukup nilai pada kedua periode. Jelaskan mengapa angka nol pada E24 memberikan bukti yang lebih kuat daripada nilai NULL pada E08.
Set schema
SET search_path TO lab8;
Periksa jumlah
SET search_path TO lab8;

SELECT 'students' AS table_name, COUNT(*) AS row_count
FROM students
UNION ALL SELECT 'courses', COUNT(*) FROM courses
UNION ALL SELECT 'enrolments', COUNT(*) FROM enrolments
UNION ALL SELECT 'assessment_results', COUNT(*) FROM assessment_results
UNION ALL SELECT 'support_units', COUNT(*) FROM support_units
ORDER BY table_name;
Periksa bukti
SET search_path TO lab8;

SELECT e.enrolment_id, e.student_id, e.course_code,
       r.result_id, r.period, r.assessment_no, r.score
FROM enrolments AS e
JOIN assessment_results AS r
  ON r.enrolment_id = e.enrolment_id
WHERE e.enrolment_id IN ('E01', 'E07', 'E08', 'E09', 'E24')
ORDER BY e.enrolment_id, r.period, r.assessment_no;